آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دریافت ارور   (حل شد )Call to a member function query() on a non-object

ARROW  9 سال پیش  9 سال پیش
0 0

سلام دوستان لطفا این کد رو یه نگاهی بفرمایید موقع اجرا این ارور رو میده.

 Fatal error: Call to a member function query() on a non-object in C:\dev\workspace\web\mynotes\db.php on line 34

این هم کد دیتابیس

 
<?
class Db {
private $connection;
public function __constract($option=null){
if($option!=null){
$host=$option['host'];
$user=$option['user'];
$pass=$option['pass'];
$name=$option['name'];
} else {
global $config;
$host=$config['db']['host'];
$user=$config['db']['user'];
$pass=$config['db']['pass'];
$name=$config['db']['name'];
}
$this->connection = new mysqli($host, $user, $pass, $name);
if ($this->connection->connect_error) {
echo "Connection failed: " . $this->connection->connect_error;
exit;
}
$this->connection->query("SET NAMES 'utf8'");

}
public function first($sql) {
$records=$this->query($sql);
if($records==null){
return null;
}
return $records[0];
}

public function query($sql) {
$result = $this->connection->query($sql);
dump($result);
$records = array();
if ($result->num_rows == 0) {
return null;
}
while($row=$result->fetch_assoc()){
$records[]=$row;
}
return $records;
}
public function connection() {
return $this->connection;
}

public function close() {
$this->connection->close();
}
}
?>

 

 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
سجاد عباسی  9 سال پیش
+1 0

 پاسخ صحیح

شما یه غلط تایپی دارید... دقت کنید کانستراکت رو اشتباه نوشتید. شما نوشتید:

  public function __constract($option=null){

که غلطه و باید بنویسید:

  public function __construct($option = null){

کد شما این مشکل رو داشت که کانستراکت اجرا نمیشد و شی mysqli ایجاد و داخل متغیر  $connection قرار نمیگره پس null هست و این ارور رو میده. این خط رو تصحیح کنید تا ارور رفع بشه.

+1 0
خدا خیرت بده کلافه ام کرده بود (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .